package com.gl.glcourses.repository.jpa;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.stereotype.Repository;

import com.gl.glcourses.repository.ICursosRepository;
import com.gl.glcourses.vos.*;

@Repository
public class JpaCursosRepository extends JpaProjectRepository<Curso> implements ICursosRepository<Curso>   {

	@Override
	public Voto buscarVoto(String nombreUsuario, Long idNovedad) {
		Query query = null;
		try {
			query = em.createQuery("SELECT obj FROM Voto obj WHERE obj.usuario.nombre =  :param AND obj.votacionCurso.id = :param2");
			query.setParameter("param", nombreUsuario);
			query.setParameter("param2", idNovedad);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return (Voto) query.getSingleResult();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Voto> getVotosUsuario(Usuario usuario) {
		Query query = null;
		try {
			query = em.createQuery("FROM Voto as obj WHERE obj.usuario = :param");
			query.setParameter("param", usuario);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return query.getResultList();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<VotacionCurso> getVotacionesCursos(Votacion votacion) {
		Query query = null;
		try {
			query = em.createQuery("FROM VotacionCurso as obj WHERE obj.votacion = :param");
			query.setParameter("param", votacion);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return query.getResultList();
	}
	
	@PersistenceContext
	protected EntityManager em;

public Curso findCurso(String atributo, String parametro) {
		
	Curso objeto = null;
		try {

			Query query = em.createQuery("FROM Curso"
					+ " as objeto WHERE objeto." + atributo + " = :param");
			query.setParameter("param", parametro);
			return objeto = (Curso) query.getSingleResult();

		} catch (Exception e) {
			return null;
		}
	}
}



